/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocios;

import ejb.AlumnoFacade;
import ejb.FinalFacade;
import ejb.InscripcionFacade;
import ejb.RegularidadFacade;
import entidades.Alumno;
import entidades.Final;
import entidades.Inscripcion;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;

/**
 *
 * @author Administrador
 */
@Stateless
@LocalBean
public class BajaInscripciones {
    
    //beans
    @EJB
    private InscripcionFacade inscripcionFacade;
    @EJB
    private FinalFacade finalFacade;
    @EJB
    private RegularidadFacade regularidadFacade;
    @EJB
    private AlumnoFacade alumnoFacade;
    
    //Entidades
    private Inscripcion entidadInscripcion;
    private Alumno entidadAlumno;
    
    //Listas
    private List<Inscripcion> inscripciones;
    private List<Inscripcion> inscripcionesEliminables;
    private List<Final> finales;
    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @PostConstruct
    public void constructor() {
        inscripciones = new ArrayList<Inscripcion>();
        inscripcionesEliminables = new ArrayList<Inscripcion>();
        finales = new ArrayList<Final>();
        
    }
    
    public String consultaMateriasPorDesinscribir(long idPersona) {
        
        String retorno = "";
        entidadAlumno = alumnoFacade.find(idPersona);
        inscripciones = inscripcionFacade.getInscripcionesByAlumno(entidadAlumno);
        finales = finalFacade.getFinalByAlumno(entidadAlumno);
        
        for (Inscripcion inscripcion : inscripciones){
            if (!inscripcion.getBaja().toString().equals("")){
                    inscripcionesEliminables.add(inscripcion);
            }else{
                for (Final f : finales){
                    if (inscripcion.equals(f.getInscripcion())){
                        inscripcionesEliminables.add(inscripcion);
                    }
                }
            }
        }
        
        for (Inscripcion inscripcion: inscripcionesEliminables){
            inscripciones.remove(inscripcion);
        }
        
        if (!inscripciones.isEmpty()){
            retorno = " <?xml version=\"1.0\" encoding=\"UTF-8\"?>";
            retorno += "<inscripciones>";
            for(Inscripcion inscripcion : inscripciones){
                retorno += "<inscripcion>";
                retorno += "<idinscripcion>" + inscripcion.getIdInscripcion() + "</idinscripcion>";
                retorno += "<materia>" + inscripcion.getMesa().getMateria().getNombre() + "</materia>";
                retorno += "<fecha>" + inscripcion.getMesa().getFecha() + "</fecha>";
                retorno += "<regularidad>";
                retorno += regularidadFacade.getRegularidadesByAlumnoAndMateria(entidadAlumno, inscripcion.getMesa().getMateria()).get(0).getRegularidad();
                retorno += "</regularidad>";
                retorno += "</inscripcion>";
            }
            retorno += "</inscripciones>";
        }else{
            retorno = "0";
        }
        
        
        return retorno;
    }

    public String bajaInscripcion(long idInscripcion) {
        
        String retorno = "";
        entidadInscripcion = inscripcionFacade.find(idInscripcion);
        Calendar fechaActual = Calendar.getInstance();
        String prueba = fechaActual.get(Calendar.YEAR)+"-"+((fechaActual.get(Calendar.MONTH)+"").length()==1 ? "0"+fechaActual.get(Calendar.MONTH) : fechaActual.get(Calendar.MONTH))+"-"+fechaActual.get(Calendar.DATE);
        Date fecha = Date.valueOf(prueba);
        entidadInscripcion.setBaja(fecha);
        inscripcionFacade.edit(entidadInscripcion);
        
        retorno = "0";
        
        return retorno;
    }
    
}
